#include <stdio.h>

int main() {
    // 典型的贪心算法，先装更大的包，留下来的空位再给小包
    int packs[6];
    for ( ; ; ) {
        int sumUp = 0;
        for (int i = 0; i < 6; i++) {
            scanf("%d", &packs[i]);
            sumUp += packs[i];
        }
        if (!sumUp) { break; }
        int pack6 = packs[5];
        int pack5 = packs[4];
        int pack4 = packs[3];
        int pack3 = (packs[2] + 3) / 4;
        int pack2 = 0, pack1 = 0;
        // 3, 4, 5, 6的包都没法和其它包一起放（3可以和自己放）
        int spare3 = packs[2] % 4 == 0 ? 0 : (4 - packs[2] % 4); // 装3的包剩下的空位数
        // 将2的包裹装进去，计算剩余可以装入2的空位数
        int spare2 = 5 * pack4 + (spare3 == 3 ? 5 : 0) + (spare3 == 2 ? 3 : 0) + (spare3 == 1 ? 1 : 0);
        // 计算现有的剩余的可以装1的空位数
        int spare1 = 11 * pack5 + 20 * pack4 + 9 * spare3;
        // 计算是否还需要装2的包裹
        if (packs[1] <= spare2) {
            // 现有的空位足够，不需要
            spare2 -= packs[1]; spare1 -= 4 * packs[1];
            pack2 = 0;
        }
        else {
            // 还需要额外的装2的空位
            int extraRequest2 = packs[1] - spare2;
            pack2 = (extraRequest2 + 8) / 9;
            spare1 = spare1 - 4 * spare2 + 4 * (9 - (extraRequest2 % 9));
        }
        // 计算剩余装1需要的空位
        if (packs[0] <= spare1) {
            pack1 = 0;
        }
        else {
            pack1 = (packs[0] - spare1 + 35) / 36;
        }
        printf("%d\n", pack1 + pack2 + pack3 + pack4 + pack5 + pack6);
    }
    return 0;
}